IPv4是TCP/IP協定組裡最常使用的協定,位於網路層,它使用32位元作為IP位址。要搞懂IPv4及子網路切割,必須先學會將二進位轉換成十進位,以及如何轉換回來。因為太基礎了,所以這邊就先跳過。
假設你住在臺北市中正區重慶南路一段122號,我們可以把這串地址拆為兩部分,
臺北市中正區重慶南路一段,全台灣就只有這條路;至於122號,在重慶南路一段也僅有一處。因此寫信給你時,只要確保每個部分都寫對,原則上你應該就收得到。
IP位址也是同樣設計原則,總長度為32位元,假設有個IP位址是172.16.12.22、子網路遮罩為255.255.0.0,那麼172.16就是網路編號(network ID),12.22為主機編號(host ID)。網路編號是獨一無二的。
接著我們把172.16.12.22轉換成二進位。
希望各位看得懂。
就像是信封上,有郵遞區號、位址欄、收件人欄位等,IP封包也會附上需要許多資訊在資料前端,稱為表頭(header)。表頭欄位請看下圖,最後的Options及Padding很少用到就不說了。
在網路剛形成時,電腦專家替IP位址分級成下列A、B、C(D、E不常用,故不討論):
ping 127.0.0.1
有回應,就代表TCP/IP運作正常。子網路遮罩目的是將主機IP位址轉換成網路編號,例如有一個主機位址為172.16.12.22,子網路遮罩為255.255.0.0,兩者會做AND位元運算。位元運算是計算機概論的範圍,不多提,簡單地說就是 1 AND 1 = 1,1 AND 0 = 0,你只要記得,子網路遮罩可以把主機編號都轉為0,剩下的就會是網路編號。
子網路遮罩也可以表示為位元為1的數量,例如上述的例子可寫成172.16.12.22/16,意思就是前16個位元都是網路編號。
上述的例子,172.16.0.0的網段可以提供大約6萬5,000台主機使用,如果沒有切割網段,如果中毒了可能會一口氣感染網段內所有主機。而且過大的網段在廣播封包時,網路速度可能會較為緩慢;有網路問題時,也比較難查找問題。
假設我們有個網段是192.168.52.0/24。
Decimal | Binary | |
---|---|---|
網路位址 | 192.168.52.0 | 1100 0000 . 1010 1000 . 0011 0100 . 0000 0000 |
子網路遮罩 | 255.255.255.0 | 1111 1111 . 1111 1111 . 1111 1111 . 0000 0000 |
現在要切成4個網段,我們會需要額外兩個位元,我們就可以向原本的主機編號部分借兩個位元,也就是192.168.52.0/26,或者把子網路遮罩寫為255.255.255.192。
Decimal | Binary | |
---|---|---|
網路位址 | 192.168.52.0 | 1100 0000 . 1010 1000 . 0011 0100 . 0000 0000 |
子網路遮罩 | 255.255.255.192 | 1111 1111 . 1111 1111 . 1111 1111 . 1100 0000 |
共可切割成4個子網段,另外,每個子網段第一個位址代表網段自己,最後一個位址代表廣播位址,都必須保留不用,故4個子網段及可用主機位址如下:
IPv4的發明者在設計時,根本沒想到網路會成為人類歷史上的偉大發明之一。結果IPv4的位址根本不夠用,最好的解決方法就是IPv6,直接從32位元增加到128位元。不過在廣泛使用IPv6之前,人們則使用網路位址轉換(Network Address Translation),並將IP位址分成私人IP(private IP)、公用IP(public IP)。
等級 | 公用IP範圍 |
---|---|
A | 1.0.0.0 ~ 9.255.255.255 以及 11.0.0.0 ~ 126.255.255.255 |
B | 128.0.0.0 ~ 172.15.255.255 以及 172.32.0.0 ~ 191.255.255.255 |
C | 192.0.0.0 ~ 192.167.255.255 以及 192.169.0.0 ~ 223.255.255.255 |
等級 | 私人IP範圍 |
---|---|
A | 10.0.0.0/8 |
B | 172.16.0.0/12 |
C | 192.168.0.0/16 |